package com.eascs.workflow.sys.service;

import java.util.List;
import java.util.Map;

import com.eascs.app.dao.PageResult;
import com.eascs.web.sso.User;
import com.eascs.workflow.common.entity.sys.ActOrgEntity;
import com.eascs.workflow.common.entity.sys.ActOrgRoleUserEntity;
import com.eascs.workflow.common.entity.sys.ActOrgUser;
import com.eascs.workflow.common.entity.sys.SysResources;
import com.eascs.workflow.common.entity.sys.SysRole;
import com.eascs.workflow.common.entity.sys.SysRoleResources;
import com.eascs.workflow.common.entity.sys.SysUser;
import com.eascs.workflow.common.vo.ModelResult;
import com.eascs.workflow.common.vo.OrgUserRoleVo;
import com.eascs.workflow.common.vo.OrgUserVO;

public interface SysPermissionServiceInlet {

	/**
     * 根据用户查询权限
     * @param 
     * @return
     * 
     * 
     */
    public ModelResult<List<SysResources>> queryResourcesByUser(SysUser user);
    
    /**
     * 根据角色查询用户
     */
    public ModelResult<List<SysUser>> queryByUsernameWithRoles(SysRole role);
    
    /**
     * 根据角色查询权限
     * @param 
     * @return
     */
    public ModelResult<List<SysResources>> selectResourcesByRoles(SysRole role);
    
    
    /**
     * 查询资源权限列表
     * @param 
     * @return
     */
    public ModelResult<List<SysResources>> selectResourcesList();
    
    /**
     * 新增资源权限
     * @param 
     * @return
     */
    public ModelResult<SysResources> insertResources(SysResources sysResources);
    
    /**
     * 修改资源权限
     * @param 
     * @return
     */
    public ModelResult<Integer> updateResources(SysResources sysResources);
    
    /**
     * 删除资源权限
     * @param 
     * @return
     */
    public ModelResult<Integer> deleteResources(SysResources sysResources);
    
    
    
    /**
     * ----------------------------------------------------------------------------------
     * 查询角色列表
     * @param
     * @return
     */
    public ModelResult<PageResult<Object[]>> selectRolesPage(SysRole param,int pageSize,int pageIndex);
    
    /**
     * ----------------------------------------------------------------------------------
     * 查询角色列表
     * @param
     * @return
     */
    public ModelResult<PageResult<User>> searchEmployeePage(Map<String, String> param,int pageSize,int pageIndex);
    
    
    /**
     * 查询角色
     */
    public ModelResult<SysRole> selectRolesByRole(SysRole sysRole);
    
    /**
     * 新增角色
     * @return
     */
    public ModelResult<Integer> insertRole(SysRole sysRole);
    
    /**
     * 删除角色
     * @return
     */
    public ModelResult<Integer> deleteRole(SysRole sysRole);
    
    /**
     * 修改角色
     * @return
     */
    public ModelResult<Integer> updateRole(SysRole sysRole);
    
    /**
     * 批量：新增角色资源
     * @return
     */
    public ModelResult<Integer> insertRoleResBatch(List<SysRoleResources> roleResList);

    /**
     * ----------------------------------------------------------------------------------
     * 查询人员角色列表
     * @param 
     * @return
     */
    public ModelResult<PageResult<OrgUserRoleVo>> searchOrgUserRolePage(Map<String, String> param,int pageSize,int pageIndex);
    
    /**
     * 查询省区/平台列表
     * @param actOrgEntity
     * @return
     */
    public ModelResult<List<ActOrgEntity>> getOrgListByLevel(String parentId, int level);
    
    public ModelResult<List<ActOrgEntity>> getLeafNodeByParentId(String orgId);
    
    /***
     * 查询角色列表
     * @return
     */
    public ModelResult<List<SysRole>> getRoleList();
    
    /***
     * 查询员工信息
     * @param userNo
     * @return
     */
    public ModelResult<User> getSysUserById(String userNo);
    
    /***
     * 查询角色层级
     * @param roleId
     * @return
     */
    public ModelResult<SysRole> getRoleById(String roleId);
    
    /**
     * 保存用户角色权限
     * @param orgRoleUserEntity
     * @return
     */
    public ModelResult<Integer> saveOrUpdateOrgUserRole(ActOrgRoleUserEntity orgRoleUserEntity);

    
    public ModelResult<List<Object[]>> getLikeEmployeeList(String likeStr);
    
    /**
     * 删除用户角色权限
     * @param id
     * @return
     */
    public ModelResult<Integer> delUserRole(String id);
    
    /**
     * 查询用户角色权限列表
     * @param userNo
     * @param pageSize
     * @param pageIndex
     * @return
     */
    public ModelResult<List<ActOrgRoleUserEntity>> getUserRoleList(String userNo);
    
    /**
     * 检查是否超级管理员
     * @param userNo
     * @return
     */
    public ModelResult<Boolean> checkIsAdmin(String userNo);
    
    /**
     * 检查是否拥有某项角色
     * @param userNo
     * @param roleCode
     * @return
     */
	public ModelResult<Boolean> checkAuth(String userNo, String roleCode);
	
	public ModelResult<List<Object[]>> getOperatorList(String userName);
	
	public ModelResult<List<Object[]>> getOperatorListByRoleCode(String userName, String roleCode);
	
	public ModelResult<PageResult<OrgUserVO>> queryPageActOrgUser(String orgId, int pageSize, int pageIndex);
	
	public ModelResult<Integer> insertActOrgUser(ActOrgUser actOrgUser);
	
	public ModelResult<Integer> deleteActOrgUser(String id,String userNo);
	
    /**
     * 组织架构联想查询，level若为空则查询所有层级
     * @param orgName
     * @param level	 组织机构层级
     * @return
     */
    public ModelResult<List<Object[]>> getOrgListLikeName(String orgName, Integer level);
    
    public List<ActOrgEntity> getChildOrgByOrgId(String orgId);
}
